package com.tarena.lbs.coupon.service;

import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.coupon.api.pojo.param.UserCouponsParam;
import com.tarena.lbs.coupon.pojo.param.CouponParam;
import com.tarena.lbs.coupon.pojo.query.UserCouponCodeQuery;
import com.tarena.lbs.coupon.pojo.query.UserCouponQuery;
import com.tarena.lbs.coupon.pojo.vo.CouponVO;
import com.tarena.lbs.coupon.pojo.vo.UserCouponsVO;

import java.util.List;

public interface CouponService {

    /**
     * 新增或更新优惠券
     * @param couponParam 优惠券参数
     * @throws BusinessException 业务异常
     */
    void saveCoupon(CouponParam couponParam) throws BusinessException;
    
    /**
     * 领取优惠券
     * @param param 用户领取优惠券参数
     * @throws BusinessException 业务异常
     */
    void receiveCoupon(UserCouponsParam param) throws BusinessException;
    
    /**
     * 根据优惠券码查询详情
     * @param query 查询参数
     * @return 优惠券详情
     * @throws BusinessException 业务异常
     */
    UserCouponsVO receiveDetail(UserCouponCodeQuery query) throws BusinessException;
//查看用户领取的优惠券列表
    PageResult<UserCouponsVO> receiveList(UserCouponQuery couponQuery);
//查看优惠券详情
    CouponVO detail(Integer id);
}